#pragma once

#include <MOE/Core/BasicTypes.h>

namespace MOE
{
	namespace System
	{
		namespace NonIntrusive
		{
			typedef Core::tUntypedConstRef tTokenType;

			// Provides a run-time static type ID for a class T.
			// This should not be directly be used by the users, and only through systems within NonIntrusive.
			template <class T>
			class TypeToken
			{
			public:
				static const tTokenType Value()
				{
					static const tTokenType token;
					return &token;
				}
			};
		}
	}
}
